1 定位
用于管理容器化负载和服务的、便捷、可扩展的平台。
2 组件
(1) 控制面板组件
控制面板组件用于指定全局决策。可以运行在任意机器上。通常为了简洁,全部运行在没有服务部署的机器上。
高可用部署详见Building High-Availability Clusters
1) kube-apiserver
用于暴露Kubernetes API。可以运行多个实例以负载均衡。
2) etcd
用于保存集群数据的持久化、高可用键值存储。
需要确保备份,详见back up
细节详见documentation
3) kube-scheduler
关注新建但没有分配node的Pods,并选择一个分配。
影响因素包括:独立和聚合的资源需求、硬件/软件/规则限制、关系和反关系规范、数据本地化、相互负载影响和最后期限等。
4) kube-controller-manager
用于运行controller进程。
逻辑上,每个控制器是一个独立的进程。但为了简洁,全部编译成一个二进制文件,并且运行在一个进程中。
控制器包括:
- 节点控制器:关注并反馈节点失效情况。
- 作业控制器:关注作业对象,并创建Pods以完成任务执行。
- 端点控制器:填充端点对象,如合并任务和Pods
- 服务账户和令牌控制器:为新的命名空间创建默认账户和API访问令牌。
5) cloud-controller-manager
内嵌云相关的控制逻辑,用于管理和云服务商API的连接。
只在云环境中运行,在本地不会运行。
和kube-controller-manager蕾丝,将多个独立的控制逻辑编译成一个二进制文件,并运行在一个进程中。
控制逻辑包括:
- 节点控制器:用于判断节点失联后是否被删除
- 路径控制器:用于设置底层云设施路径
- 服务控制器:用于创建、更新和删除云服务商负载均衡器。
(2) 节点组件
在每个节点上运行,用于维护运行的pods和提供运行时环境。
1) kubelet
代理,用于确保容器运行在Pod中。
2) kube-proxy
实现了部分服务概念的网络代理。
管理节点内外部网络通信。
优先使用操作系统包过滤层,否则向前传输。
3) Container runtime
运行容器的软件。如Docker, containerd, CRI-O和所有 Kubernetes CRI (Container Runtime Interface)的实现。
(3) 附件
使用k8s资源实现集群特性。因为是集群级别的特性,这些附件的资源属于kube-system命名空间。
更多附件详见Addons
1) DNS
集群必需,详见cluster DNS,而其他附件可选
2) Web UI(Dashboard)
3) Container Resource Monitoring
详见Container Resource Monitoring